package map;


import java.util.*;

public class Test {
    public static void main(String[] args) {
        Map<String,String> map = new TreeMap<>();   //二叉搜索树
        Map<String,String> map2 = new HashMap<>();  //哈希表

        //Map最主要的用途，就是构建key-value映射关系
        //使用put输入键值对，使用get根据key获取value


        map.put("呼保义","宋江");
        map.put("黑旋风","李逵");
        map.put("小李广","花荣");
        map.put("及时雨","宋江");
//
//
////        System.out.println(map);
//
        //一个key只能对应一个value，不能对应多个
//        System.out.println(map.get("小李广"));
//        System.out.println(map.get("及时雨"));
//        System.out.println(map.get("玉麒麟"));
//        System.out.println(map.getOrDefault("玉麒麟","梁山好汉"));
////
//        //打印键值对的个数
//        System.out.println(map.size());
//
//        //判定key是否存在（高效）
//        System.out.println(map.containsKey("及时雨"));
////
//        //判断key是否存在（低效），遍历
//        System.out.println(map.containsValue("宋江"));

//   //     拿所有的key和value消耗内存和时间,因此要慎用.
//   //     拿到所有的key
//        Set<String> keySet = map.keySet();
//        System.out.println(keySet);
//
//
//        //拿到所有的value
//        Collection<String> values = map.values();
//        System.out.println(values);
//
//       // 遍历map的所有键值对
//        for(Map.Entry<String,String> entry : map.entrySet()){
//            System.out.println(entry.getKey() + ":" + entry.getValue());
//        }

        //跟keySet一样,这里的entrySet也是一个高开销操作,也需要慎用,不能针对很大的Map进行entrySet
        //而且,Map设计的初心,是让我们去解决key => value的映射问题的,而不是让用来遍历的.

        map.remove("及时雨");
        System.out.println(map);

        map.clear();
        System.out.println(map);
        System.out.println(map.isEmpty());
    }
}
